<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of CUtilitario_lancamentos
 *
 * @author calixto
 */
class CUtilitario_lancamentos extends controlePadrao{
	protected $contas;
	protected $trilha;
	public function inicial(){
		$contas = new NConta();
		$contas->lerTodosAninhado();
//		$h = fopen('/tmp/gnucash.csv','r');
//		unlink('/tmp/lancamentos.csv');
//		$e = fopen('/tmp/lancamentos.csv','a+');
//		echo '<pre>';
//		while (!feof($h)){
//			$linha = str_replace("\n",'',fgets($h,4096));
//			if(!$linha) continue;
//			if($linha == ',,,,')continue;
//			if(preg_match('/^\d{2}/', $linha)){
//				$prefixo = $linha;
//				continue;
//			}
//			fputs($e, $prefixo.$linha."\n");
//			echo $prefixo.$linha."\n";
//		}
//		fclose($h);
//		fclose($e);
		$e = fopen('/tmp/lancamentos.csv','a+');
		$data='';
		$i = 0;
		try{
		 //persistente::imprimirComandos(true);
		while (!feof($e)){
			$i++;
			$ar = fgetcsv($e);
			if(!$ar) break;
			$arData = explode('/',$ar[0]);
			if(count($arData) != 3){
				x($ar);die;
			}
			@$tData = new TData($arData[0].'/'.$arData[1].'/20'.$arData[2]);
			$this->trilha = $ar[6];
			if($ar[0] != $data){
				$data = $ar[0];
				$nLote = new NLote();
				$nLote->passarData($tData);
				$nLote->passarStatus(NLote::aberto);
				$nLote->gravar();
			}
			if(!isset($this->contas[$this->trilha])) {
				$this->conta($contas->pegarColecaoFilhos(),explode(':',$this->trilha));
			}
			$nLancamento = new NLancamento();
			$nLancamento->passarIdLote($nLote->valorChave());
			$nLancamento->passarData($tData);
			$nLancamento->passarHistorico($ar[1] ? $ar[1] : 'Histórico não definido.');
			$nLancamento->passarValor(new TMoeda($ar[7]?$ar[7]:$ar[8]));
			$nLancamento->passarIdConta($this->contas[$this->trilha]);
			$nLancamento->passarTipo($ar[7] ? NLancamento::Debito : NLancamento::Credito);
			$nLancamento->gravar();
		}
		$nLote = new NLote();
		$coLotes = $nLote->lerTodos();
		$coLotes->fechar();
		}  catch (Exception $e){
			echo $i;
			echo $e;
			x($ar,$i,(string) $e, $this->contas[$this->trilha]);
			die;
		}
	}
	public function conta($contas,$trilha){
		$conta = array_shift($trilha);
		foreach($contas->itens as $nConta){
			if($nConta->pegarNome() == $conta){
				if(count($trilha)){
					$this->conta($nConta->pegarColecaoFilhos(), $trilha);
					return;
				}else{
					$this->contas[$this->trilha] = $nConta->valorChave();
					return;
				}
			}
		}
		x($trilha);
	}
}
?>
